The function of a TCP congestion control mechanism is to adjust the rate with which the protocol sends packets to the network using a congestion control window Cwnd. A good congestion control mechanism can fully utilize the bandwidth while avoiding over-driving the network and thereby creating packet losses. Since the introduction of the first widely used TCP congestion control mechanism, TCP Reno, many TCP congestion control mechanisms have been proposed. Different congestion control mechanisms attempt to address various shortcomings of other congestion control mechanisms depending upon different network characteristics.
One particular network type that is difficult to provide a congestion control mechanism for that will fairly and fully utilize the network bandwidth is a heterogenous network that includes both high latency links and low latency links. One attempt at improving the congestion control mechanisms for heterogenous, high latency networks is TCP-Hybla. TCP-Hybla is similar to TCP Reno, in that it adjusts a congestion window (Cwnd) size based on the receipt of ACK packets and on a timeout of receiving the ACK. The congestion window controls the number of allowable unacknowledged packets that can be in transit. In standard TCP Reno the Cwnd is increased by a maximum segment size (MSS) for each non-duplicate ACK received. When a timeout occurs and the transmitted packet has not been acknowledged, Cwnd is decreased to 1 MSS. The increase in the window size is based on the RTT, and so high latency links do not fully utilize the available bandwidth. TCP Hybla attempts to increase the bandwidth use for high latency networks by removing the dependence of the throughput on RTT. TCP-Hybla adjusts Cwnd according to a normalized round trip time used to equalize the Additive Increase and Multiplicative Decrease (AIMD) performance of the congestion control mechanism. The throughput of TCP-Hybla is:
      T    R    =            1              RTT        0              ⁢                  2                  3          ⁢                                          ⁢          PLR                    
As can be seen, the dependence of the throughput on RTT is removed and as such, the high latency links are not penalized.
Although TCP-Hybla can provide good throughput for high latency links, it cannot fully utilize the bandwidth when there is high packet loss, as may be the case for wireless links.
An additional or alternative TCP congestion control mechanism for heterogeneous networks with a high latency link and that may exhibit packet loss is desirable.